Attribute
Prüfungen können Attribute haben. Das sind Einstellungen, die zu einem Test vorgenommen werden können. Hier kann z.B. noch definiert werden, in welchem Umfang ein Test durchgeführt werden soll.
Typische Attribute sind zum Beispiel die folgenden zur Prüfung “Analyse der WHERE-Bedingung für SELECT”:
Vorbereitung
Dem Code Inspector muss mitgeteilt werden, dass die Klasse Attribute hat. Dies geschieht in der CONSTRUCTOR-Methode:
has_attributes = 'X'.
Attribute definieren
Die Attribute müssen als öffentliche Instanzattribute der Klasse hinzugefügt werden. In diesem Beispiel verwenden wir die Felder GP_CHECK1 und GP_CHECK2:
Im Code Inspector erkennt man Prüfungen mit Eingabefeldern (Attributen) daran, dass neben der Prüfung ein “Werte-eingeben-Icon” erscheint:
Methode QUERY_ATTRIBUTES
Die Methode IF_CI_TEST~QUERY_ATTRIBUTES muss redefiniert werden. Hier wird das Popup angezeigt, in dem die Auswahl bzw. Anzeige der Attribute erfolgt:
Mit folgendem Coding wird dieses Popup automatisch erzeugt:
Coding
CLASS cl_ci_query_attributes DEFINITION LOAD. DATA: l_attributes TYPE sci_atttab, l_attribute LIKE LINE OF l_attributes, l_check1 TYPE c, l_check2 TYPE c, l_message(72) TYPE c.
*-- macro to fill attributes
DEFINE fill_att.
get reference of &1 into l_attribute-ref.
l_attribute-text = &2.
l_attribute-kind = &3.
append l_attribute to l_attributes.
END-OF-DEFINITION.
*-- save global attributes local
l_check1 = gp_check1.
l_check2 = gp_check2.
*-- fill attribute table
fill_att gp_check1 'Prüfung Eins' ' '.
fill_att gp_check2 'Prüfung Zwei' 'C'.
*-- Display Popup with attributes IF cl_ci_query_attributes=>generic( p_name = myname p_title = 'Meine Attribute'(005) p_attributes = l_attributes p_message = l_message p_display = p_display ) = 'X'. *-- = 'X' --> 'Exit' Button pressed on PopUp RETURN. ENDIF.
*-- set attributes-ok-flag
attributes_ok = c_true.
QUERY-Table / Attributtabelle
Mit Hilfe der Methode cl_ci_query_attributes=>generic werden die Attribute im Popup angezeigt. Zuvor müssen die Attribute mit dem Macro fill_att definiert werden.
Folgende Einträge sind möglich in der Tabelle für die Attribute (Auszug aus der Doku zu Struktur SCI_ATTENT):
Die Struktur SCI_ATTENT beschreibt Felder eines Dialoges. Die einzelnen Komponenten können folgen Werte annehmen.
o KIND
-
‘G’ – Gruppierung der folgenden Felder
-
‘C’ – Darstellung als Ankreuzfeld
-
‘R’ – Darstellung als Auswahlknopf (siehe auch BUTTON_GROUP)
-
‘S’ – Darstellung als Selektionskriterium
-
‘L’ – Darstellung als Listbox
o REF
Referenz auf das Attribut
o TEXT
Beschreibung oder Titel
o BUTTON_GROUP
Spezifiziert die Auswahlgruppe der ein Auswahlknopf zugeordnet ist.
Speichern
Damit die Attribute auch gespeichert werden, müssen die beiden Methoden GET_ATTRIBUTES und PUT_ATTRIBUTES redefiniert werden. Die Namensgebung der Methoden ist meines Erachtens etwas verwirrend, denn mit GET werden die Attribute gespeichert und mit PUT gelesen…
Methode GET_ATTRIBUTES
Speichern der Attribute:
EXPORT gp_check1 = gp_check1 gp_check2 = gp_check2 TO DATA BUFFER p_attributes.
Methode PUT_ATTRIBUTES
Lesen der Attribute
IMPORT gp_check1 = gp_check1 gp_check2 = gp_check2 FROM DATA BUFFER p_attributes.
Verwendung
Die Attribute können nun im Code Inspector eingegeben werden und in der Prüfroutine abgefragt werden. Sie könnten zum Beispiel das Aufspüren des fehlenden BAPI_TRANSACTION_COMMIT als Option definieren, so dass eine Prüfung auch ohne diesen Check durchgeführt werden kann.
Sie können aber auch steuern, ob die Prüfung einen Fehler oder nur eine Warnung erzeugen soll und dies im Coding berücksichtigen.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024